﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
using eOrdered.Helpers;
using System.Reflection;
using Ninject;
using Ninject.Web.Mvc;

namespace eOrdered
{
    // Note: For instructions on enabling IIS6 or IIS7 classic mode, 
    // visit http://go.microsoft.com/?LinkId=9394801

    public class MvcApplication : NinjectHttpApplication
    {
        public static void RegisterGlobalFilters( GlobalFilterCollection filters )
        {
            filters.Add( new HandleErrorAttribute() );
        }

        protected override IKernel CreateKernel()
        {
            return new StandardKernel(new LoadModule());
        }

        public static void RegisterRoutes( RouteCollection routes )
        {
            routes.IgnoreRoute( "{resource}.axd/{*pathInfo}" );

            routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
            );

        }

        protected override void OnApplicationStarted()
        {
            AreaRegistration.RegisterAllAreas();
            // RegisterAllControllersIn(Assembly.GetExecutingAssembly());
            RegisterRoutes( RouteTable.Routes );
            ViewEngines.Engines.Clear();
            ViewEngines.Engines.AddGenericMobile<RazorViewEngine>();
            ViewEngines.Engines.AddDesktop<RazorViewEngine>();
        }
    }

    public class LoadModule : Ninject.Modules.NinjectModule 
    {
        public override void Load()
        {
            Bind<Controllers.Home.IHomeService>().To<Controllers.Home.HomeService>();
        }
    }
}